A robot software component is a reusable and replaceable software module. An external component user uses only the interface provided by the component, and can construct a robot application only by combining components without knowledge of the detailed implementation of the corresponding interface.
Robot components used for a robot software configuration have their respective internal states and operate in an individual manner, and robot control is achieved by data exchange and method invocation performed among the components through the component interfaces. In recent years, in order to support these characteristics of the robot, Open Robot Control Software (OROCOS), Robot Technology Component (RTC) and the like suggest a robot programming method using a component in a form of an active pattern.
In order to drive robot software components, the components are executed in a given cycle using threads of an operating system. However, the number of components used for the robot is large because the robot uses various devices and algorithms. In this case, if each component is assigned one thread for use, the system resources of the operating system are wasted and thread context switching frequently occurs, thereby degrading system performance.
Therefore, in the prior art like OROCOS, components of a same cycle are processed by one thread in order to prevent degradation of system performance caused by the assignment of a thread for each component, thereby preventing degradation of system performance.
In this manner, in case a number of components are processed by one thread, components registered in the corresponding thread are sequentially processed in each cycle.
However, in case there occurs a failure in a specific component during sequential processing of components registered in one thread or all the components cannot be executed within a given cycle because the execution time of the components is extended, the execution of other components is also disturbed. As a result, a failure in one component causes an abnormality in the operation of the entire robot system.